The SPI protocol is a widely used protocol for data transfer between integrated circuits (ICs), in particular, between a single master device and one or more slave devices, e.g., peripheral devices. The SPI protocol is a source-synchronous protocol which requires a defined timing for correct operation. In a source-synchronous system there is a single clock domain, defined by the master device. The master device transmits a clock and a data signal to the slave device, if the slave device is responding to a read request, it must transfer the data back to the master device in alignment with the clock. The SPI protocol defines these alignment relationships.
The physical distance between the master device and the different slave device can vary. Furthermore, some slave devices may be configured to be electrically isolated from other devices, e.g., using electrical devices and/or multiple pounding planes. These variations in distance and electrical isolation can cause electrical delays in transmission of signals between the master device and the different slave devices. The delays may result in mis-alignment of data and/or incorrect data transfer, particularly with respect to READ operations.